mata:
	transmorphic callf(pointer vector p, real matrix x)
	{
		real scalar n
		n=*(p[2])
		if(n==0) return((*p[1])(x))
		if(n==1) return((*p[1])(x,*p[3]))
		if(n==2) return((*p[1])(x,*p[3],*p[4]))
		if(n==3) return((*p[1])(x,*p[3],*p[4],*p[5]))
		if(n==4) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6]))
		if(n==5) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7]))
		if(n==6) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8]))
		if(n==7) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9]))
		if(n==8) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10]))
		if(n==9) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11]))
		if(n==10) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11],*p[12]))
		if(n==11) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11],*p[12],*p[13]))
		if(n==12) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11],*p[12],*p[13],*p[14]))
		if(n==13) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11],*p[12],*p[13],*p[14],*p[15]))
		if(n==14) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11],*p[12],*p[13],*p[14],*p[15],*p[16]))
		if(n==15) return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11],*p[12],*p[13],*p[14],*p[15],*p[16],*p[17]))
		return((*p[1])(x,*p[3],*p[4],*p[5],*p[6],*p[7],*p[8],*p[9],*p[10],*p[11],*p[12],*p[13],*p[14],*p[15],*p[16],*p[17]))
	}
end
